Package org.python.pydev.parser.visitors.scope

Source Code of org.python.pydev.parser.visitors.scope.ReturnVisitor

/**
* Copyright (c) 2005-2011 by Appcelerator, Inc. All Rights Reserved.
* Licensed under the terms of the Eclipse Public License (EPL).
* Please see the license.txt included with this distribution for details.
* Any modifications to this file must keep this entire header intact.
*/
package org.python.pydev.parser.visitors.scope;

import java.util.ArrayList;
import java.util.List;

import org.python.pydev.parser.jython.SimpleNode;
import org.python.pydev.parser.jython.ast.ClassDef;
import org.python.pydev.parser.jython.ast.FunctionDef;
import org.python.pydev.parser.jython.ast.Return;
import org.python.pydev.parser.jython.ast.VisitorBase;
import org.python.pydev.parser.jython.ast.stmtType;

public class ReturnVisitor extends VisitorBase {

    public static List<Return> findReturns(FunctionDef functionDef) {
        ReturnVisitor visitor = new ReturnVisitor();
        if (functionDef == null) {
            return visitor.ret;
        }
        stmtType[] body = functionDef.body;
        if (body == null) {
            return visitor.ret;
        }

        try {
            int len = body.length;
            for (int i = 0; i < len; i++) {
                stmtType b = body[i];
                if (b != null) {
                    b.accept(visitor);
                }
            }
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
        return visitor.ret;
    }

    private ArrayList<Return> ret = new ArrayList<Return>(3); //Start considering 3 returns.

    @Override
    public Object visitReturn(Return node) throws Exception {
        ret.add(node);
        return null;
    }

    @Override
    public void traverse(SimpleNode node) throws Exception {
        node.traverse(this);
    }

    @Override
    public Object visitClassDef(ClassDef node) throws Exception {
        return null;
    }

    @Override
    public Object visitFunctionDef(FunctionDef node) throws Exception {
        return null;
    }

    @Override
    protected Object unhandled_node(SimpleNode node) throws Exception {
        return null;
    }

}
TOP

Related Classes of org.python.pydev.parser.visitors.scope.ReturnVisitor

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.